Inverse kinematic solution blending in digital character animation

ABSTRACT

The present disclosure relates to systems, non-transitory computer-readable media, and methods for intelligently blending inverse kinematic (IK) solutions to more naturally depict joint positioning and/or movement of digital animated characters. In particular, in one or more embodiments, the character animation system can blend two IK solutions for an elbow joint based on a shoulder angle. For example, the character animation system can utilize a blending region to dynamically blend IK solutions as the shoulder angle moves through the blending region, thereby smoothly modifying bend direction and elbow position of the animated character arm. Based on the modified elbow position relative to a wrist position and a shoulder position, the animated character system can simulate more accurate, natural arm movements while reducing time and interactions needed to generate realistic animation sequences.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. application Ser. No.16/415,915, filed on May 17, 2019. The aforementioned application ishereby incorporated by reference in its entirety.

BACKGROUND

Recent years have seen significant improvements in computer systems forgenerating digital character animations. For example, conventionaldigital animation systems can employ inverse kinematic models to rendermovements of animated characters in digital animations. To illustrate,conventional systems can utilize inverse kinematic models to helpdetermine positions of joints over time and then render an animatedcharacter that simulates movement based on the determined jointpositions. However, a number of problems exist with conventionalanimation systems particularly in relation to accuracy and efficiency ofoperation.

BRIEF SUMMARY

Aspects of the present disclosure address the foregoing and/or otherproblems in the art with methods, computer-readable media, and systemsthat intelligently blend inverse kinematic (hereafter “IK”) solutions tomore naturally depict joint positioning and/or movement of digitalanimated characters. For example, in one or more embodiments, thedisclosed systems can blend two IK solutions for an elbow joint based ona shoulder angle. Specifically, as the upper arm of an animatedcharacter moves down, the disclosed systems can incrementally blendmultiple IK solutions, which pushes the elbow joint away from the bodyto help maintain a natural bend. In addition to generating a moreaccurate transitional bend angle of an animated character arm, thisblending approach can produce a three-dimensional appearance byshortening the arm within a blending region. By intelligently blendingtwo or more IK solutions within a blending region, the disclosed systemscan efficiently generate smooth, accurate limb motions while reducingtime and interactions needed to generate realistic two-dimensionalanimation sequences.

To illustrate, in some embodiments, the disclosed systems identify awrist position and a shoulder position of an animated character (e.g.,in a particular frame of an animated sequence). In addition, thedisclosed systems can determine, based on the wrist position and theshoulder position, a first IK solution of a first elbow position and asecond IK solution of a second elbow position. Based on a shoulder angleof the animated character, the disclosed systems can determine amodified elbow position by blending the first IK solution and the secondIK solution. Furthermore, in some embodiments, the disclosed systems maygenerate a representation of the animated character based on the wristposition, the shoulder position, and the modified elbow position.

Additional features and advantages of one or more embodiments of thepresent disclosure are outlined in the description which follows, and inpart will be obvious from the description, or may be learned by thepractice of such example embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description provides one or more embodiments withadditional specificity and detail through the use of the accompanyingdrawings, as briefly described below.

FIG. 1 illustrates a diagram of an environment in which a characteranimation system can operate in accordance with one or more embodiments.

FIG. 2A illustrates frames from a digital animation from a conventionalsystem.

FIG. 2B illustrates frames from a digital animation in accordance withone or more embodiments.

FIG. 3A illustrates a schematic diagram of IK solutions of an animatedcharacter in accordance with one or more embodiments.

FIG. 3B illustrates a schematic diagram of a blending region inaccordance with one or more embodiments.

FIGS. 3C-3G illustrate schematic diagrams of generating representationsof an animated character as a shoulder angle progresses through ablending region in accordance with one or more embodiments.

FIG. 4 illustrates a schematic of example art layers associated withvarious orientations of an arm of an animated character in accordancewith one or more embodiments.

FIG. 5 illustrates a schematic diagram of a character animation systemin accordance with one or more embodiments.

FIG. 6 illustrates a flow chart of a series of acts in a step forgenerating a representation of an animated character in accordance withone or more embodiments.

FIG. 7 illustrates a flowchart of a series of acts for blending IKsolutions in accordance with one or more embodiments.

FIG. 8 illustrates a block diagram of an example computing device forimplementing one or more embodiments of the present disclosure.

DETAILED DESCRIPTION

This disclosure describes one or more embodiments of a characteranimation system that intelligently blends inverse kinematic (hereafter“IK”) solutions to more naturally depict joint positioning and/ormovement of digital animated characters. In particular, in someembodiments, the character animation system blends IK solutions based ona shoulder angle to determine more accurate, realistic elbow positionsand arm movement in digital animations. For example, in response todetecting that a shoulder angle crosses a shoulder angle limit, thecharacter animation system can alternate from one bending direction(corresponding to a first IK solution) to another bending direction(corresponding to a second IK solution) to maintain realistic arm bendacross different movements. Moreover, the character animation system canutilize a transition angle to dynamically blend different IK solutionswithin a blending region, thereby smoothly modifying bend direction andelbow position to simulate a forearm arm rotating through an elbowjoint. Furthermore, the character animation system can mimic athree-dimensional effect by dynamically shortening and/or lengthening anarm of the animated character as the arm rotates through the elbowjoint. By intelligently blending IK solutions within a blending region,the character animation system can efficiently generate smooth, accuratearm movements while reducing time and interactions needed to generaterealistic, two-dimensional animation sequences.

To illustrate, in some embodiments, the character animation systemidentifies a wrist position and a shoulder position of an animatedcharacter (e.g., in a particular frame of an animated sequence). Inaddition, the character animation system can determine, based on thewrist position and the shoulder position, a first IK solution of a firstelbow position and a second IK solution of a second elbow position.Based on a shoulder angle of the animated character, the characteranimation system can determine a modified elbow position by blending thefirst IK solution and the second IK solution. Furthermore, in someembodiments, the character animation system generates a representationof the animated character based on the wrist position, the shoulderposition, and the modified elbow position.

As mentioned above, the character animation system may use multiple IKsolutions to determine bending direction and/or a modified elbowposition of an animated character. As described in greater detail below,the character animation system can generate IK solutions reflectingdifferent elbow positions that satisfy constraints, such as upper armlength, forearm length, shoulder position, and wrist position. Forexample, for two input joint positions with intermediate structuralmembers surrounding a medial joint, two IK solutions generally exist forthe position of the medial joint. The character animation system candetermine each of these IK solutions and blend them to determine amodified position located between IK solutions (e.g., between a firstelbow position of a first IK solution and a second elbow position of asecond IK solution).

In some embodiments, the character animation system utilizes a blendingregion to smoothly blend between IK solutions. For example, when ashoulder angle falls outside a blending region, the character animationsystem can use a single IK solution to maintain a consistent arm bend.Upon detecting that a shoulder angle falls within the blending region,the character animation system can dynamically blend between IKsolutions. Specifically, based on where a shoulder angle falls within ablending region, the character animation system can emphasize differentIK solutions reflecting different bend directions to create more naturalarm movements and/or arm configurations of the animated character.

In some embodiments, the character animation system may define the metesand bounds of the blending region based on a shoulder angle limit and/ora transition angle. As an example, the character animation system mayemploy a shoulder angle limit of the animated character to define wherethe elbow joint alternates between bending directions (e.g., alternatesfrom one IK solution where the elbow points downward to another IKsolution where the elbow points upward). In one or more embodiments, thecharacter animation system provides a user interface for modification ofthe shoulder angle limit to allow for control over where the armalternates from one bending direction to another. In one or moreembodiments, the character animation system centers the blending regionon the shoulder angle limit to naturally transition from one arm bendingdirection to another.

In addition to a shoulder angle limit, the character animation systemcan also define the bending region based on one or more transitionangles. For example, the transition angle can define the range beforeand/or after the shoulder angle limit for blending different IKsolutions. To illustrate, the character animation system can use atransition angle before the shoulder angle limit (to transition from anupward bending angle at the elbow joint) and a transition angle afterthe shoulder angle limit (to transition from to a downward bending angleat the elbow joint). In some embodiments, the character animation systemprovides a user interface for modification of the transition angle toallow for control over how abruptly the bending direction at the elbowwill change for a particular animated character.

Upon determining a modified elbow position (from two IK solutions), thecharacter animation system can also render a representation of theanimated character. For example, the character animation system canrender a representation of the animated character in a pose defined bythe modified elbow position, the shoulder position, and the wristposition. Indeed, in this manner, as the character animation systemreceives input of different joint positions (e.g., user selection andmovement of wrist and/or shoulder positions), the character animationscan dynamically render representations of the animated character indifferent poses as part of a digital animation.

In some embodiments, the character animation system creates visualeffects to further enhance more natural arm movement and/or armconfigurations within a digital animation. As an example, by blendingelbow positions from different IK solutions, the character animationsystem can generate a representation of an animated character withshortened arms within the blending region. Shortening arm length withina blending region may create a three-dimensional visual effect ofrolling the forearm through the elbow joint of the animated character.

In addition, the character animation system can also switch art layersto more realistically render the limbs of an animated character. Forexample, as an arm moves through a blending region, the characteranimation system can alternate through digital image layers of the armduring rendering to give the appearance that the arm is rotating. Bycycling through these layers, the character animation system can providedigital images of the back of the forearm, the side of the arm, and thefront of the forearm to simulate rotation within a digital animation.

As mentioned above, a number of problems exist with conventionalanimation systems particularly in relation to accuracy and efficiency ofoperation. As one example, conventional animation systems fail toaccurately depict natural movement of animated characters. For instance,in generating two-dimensional animations, conventional systems useinverse kinematics to determine a joint position and maintain aconsistent bend direction of limbs (e.g., arms) for animated characters.However, in many circumstances, such as elbow joints in arms,conventional animation systems generate limbs with unnatural,unrealistic bending angles. In more detail, as an arm of an animatedcharacter moves, conventional animation systems can generate an arm withan elbow position that appears contorted relative to normal armconfigurations.

In addition to generating inaccurate animated characters, conventionalcharacter animation systems can also require excessive time and userinteraction with user interfaces. For instance, to remedy or mitigateunnatural or contorted arm configurations, conventional systems oftenrequire tedious frame-by-frame adjustments to the animated character.The user interface of conventional character animation systems may, inturn, receive frame-by-frame adjustment inputs to make positionalcorrections to an initial result. In some cases, the user interface mayreceive tens, hundreds, thousands, or even hundreds of thousands ofmanual inputs to the user interface for relocating various portions ofan animated character.

Some conventional systems seek to generate more realistic animatedcharacters by implementing complex, computationally-heavy machinelearning models (such as neural networks). These approaches requiresignificant computational resources to train and implement in generatingdigital animations. These additional computational resources cansignificantly reduce real-time execution speeds and even excludeimplementation on some client devices with limited processing power.

The character animation system provides many advantages and benefitsover these conventional systems and methods. For example, by blendingmultiple IK solutions, the character animation system improves accuracyof arm movement and/or arm configuration relative to conventionalsystems. Specifically, as an arm of the animated character moves, thecharacter animation system can automatically adjust the positioning ofthe elbow joint of the arm based on shoulder angle and multiple IKsolutions to create a more natural bend consistent with normal armconfigurations.

In addition to improving accuracy of animated characters, the characteranimation system can reduce the time and user interaction with userinterfaces typically required of conventional systems. Instead ofmanually adjusting the positioning of the elbow in a tediousframe-by-frame manner, the character animation system of the presentdisclosure can automatically modify the positioning of the elbow withminimal user input. For example, the character animation system candetect press and drag gestures in relation to a wrist joint. Inresponse, the character animation system can dynamically determine elbowjoint positions and render an accurate, natural animation sequence ofthe animated character that tracks movement of the drag event inrelation to the wrist joint.

Moreover, the character animation system can reduce computationaloverhead relative to conventional systems by blending two or more IKsolutions. The blending approach described herein requires very littlecomputational power, and can avoid the excessive computer resourcesneeded to train and/or apply complex machine learning models. Thecharacter animation system of the present disclosure can also improveon-the-fly character animation because data corresponding to real-timeexecution speeds is not throttled or otherwise competing for computationbandwidth.

As illustrated by the foregoing discussion, the present disclosureutilizes a variety of terms to describe features and advantages of thecharacter animation system. Additional detail is now provided regardingthese and other terms used herein. For example, as used herein, the term“animated character” refers to a graphical representation of an object,person, or animal. In particular, an animation character can refer to adigital representation of an object, person, or animal depicted as amoving body or element. An animated character may include atwo-dimensional animated character (e.g., a vector-based animation) or athree-dimensional animated character. As described in greater detailbelow, an animated character can include a plurality of structuralmembers (e.g., upper arm, forearm, head, torso, upper leg, lower leg,and/or foot) connected to a plurality of joints (e.g., shoulder joint,wrist joint, elbow joint, knee joint, ankle joint, and/or hip joint).For example, an animated character may include a bear, a human, a tree,a snowman, a cartoon character, or other bodies that can be digitallymanipulated to simulate the appearance of movement.

As just mentioned, the character animation system can generate animatedcharacters with a plurality of joints. The character animation systemcan simulate movement by modifying the joint position (and the positionof connecting structural members). Further, as used herein, the term“joint position” refers to a location of a body area associated with ajoint. In particular, the joint position may include a location at whicha first structural member is connected to a second structural member ofan animated character. For example, the joint position may includecoordinates (e.g., an X-coordinate and a Y-coordinate according to anX-Y coordinate system) that are associated with the joint and thatpositionally reference the joint within a character animation frame.

To illustrate, as used herein, the term “wrist position” refers to alocation of an animated character associated with an arm region thatincludes a wrist area. In particular, the wrist position may include alocation at which a hand pivotally connects to an arm of the animatedcharacter (e.g., at a wrist joint). Similarly, the term “shoulderposition” and “elbow position” refer to locations of an animatedcharacter associated with arm regions that include a shoulder area andelbow area, respectively. For instance, the shoulder position mayinclude a location at which the arm is movably connected to a body (ortorso) of the animated character (e.g., at a shoulder joint). Similarly,the elbow position may include a location at which the forearm (i.e., alower portion of the arm above the wrist) is movably connected to anupper arm (e.g., a portion of the arm below the shoulder) of theanimated character, for example at an elbow joint. Although manyexamples of the present disclosure focus on wrist, elbow, and shoulderjoints, the character animation system can operate in conjunction withany two joints (e.g., a first joint and a second joint) connected to amiddle joint. Additionally or alternatively, the character animationsystem can operate in conjunction with limb portions or limb segmentsthat may include multiple joints (e.g., multiple joints between ashoulder joint and a wrist joint). Similarly, the character animationsystem can operate with limbs or limb segments that may not include anyintermediate joint (e.g., a flexible member that includes an elbowposition, but no elbow joint, between the shoulder joint and the wristjoint).

Further, as used herein, the term “digital animation” refers to asequential display simulating motion of an animated character. Inparticular, a digital animation can include a plurality of frames that,when displayed sequentially, portray an animated character in motion.For example, a digital animation can include a digital movie portrayingmovement of an animated character. A digital animation can also includea user interface portraying movement of an animated character inresponse to real-time user input (e.g., selection and movement of jointsof an animated character to simulate movement of the animatedcharacter).

In addition, as used herein, the term “frame” refers to a digital image,time, or window of a digital animation. In particular, the frame mayinclude a rendering on a user interface at a particular time thatportrays an animation character in a particular pose. Similarly, a framemay include a digital image that is part of a digital movie portrayingan animation character in a particular pose.

Moreover, as used herein, the term “inverse kinematic solution” or “IKsolution” refers to a pose of an animated character (e.g., a jointposition and/or member position of an animated character) determined bya computer algorithm (e.g., an inverse kinematic computer algorithm). Inparticular, the IK solution may include positional data and/orparameters for a particular joint determined by an inverse kinematicalgorithm given positional data and/or parameters of other joints. Forexample, the IK solution may include an elbow position given a wristposition and a shoulder position subject to constraints regarding armlength (e.g., forearm length and upper arm length). Additional detailregarding inverse kinematic operations is described below.

As used herein, the term “shoulder angle” refers to a relativeorientation of the upper arm of an animated character. In particular,the shoulder angle may include an angle at which an upper arm isoriented relative to a reference plane (e.g., relative to a planealigned with the torso, neck, legs, vertical direction, horizontaldirection, or other direction of an animated character and/or frame).For example, the shoulder angle may include the angle between the upperarm and the torso of the animated character. The shoulder angle can beexpressed in a variety of different forms (e.g., radians, degrees, ordistance). In some embodiments, the character animation systemdetermines a shoulder angle by identifying a vector between an elbowposition and a shoulder position then determining an angle between thevector and a reference plane.

Further, as used herein, the term “representation” (or “representationof an animated character”) refers to a graphical rendering of ananimated character. In particular, the representation may include avisual rendering of an animated character in a particular pose (e.g.,with particular colors, shapes, textures, styles, and/or accessories).For example, the representation may include the animated character in apose with one arm hanging down and the other arm raised.

In addition, as used herein, the term “blending region” refers to arange of angles or orientations for blending IK solutions. Inparticular, the blending region may include a range of angles between afirst angle and a second angle, between which the character animationsystem may transition between a first bending direction (correspondingto a first IK solution) and a second bending direction (corresponding toa second IK solution).

As used herein, the term “shoulder angle limit” refers to an orientationof the shoulder corresponding to a limit, threshold, or alteration of anelbow bending direction. In particular, a shoulder angle limit caninclude a limit to the shoulder angle where a first elbow bendingdirection changes to a second elbow direction (i.e., the elbow bendingdirection will change upon the shoulder angle reaching the shoulderangle limit). Additionally, the shoulder angle limit may include ashoulder angle of the animated character at which a given IK solutionhas reached (or approximately reached) the extent of feasible armmovement, natural appearance, etc.

Moreover, as used herein, the term “central angle” refers to anorientation (e.g., an angle) that corresponds to the center or middle ofa blending region. In some embodiments, the shoulder angle limit definesthe central angle of the blending region. For example, the transitionangle can define the outer limits of the blending region relative tothis central angle.

Further, as used herein, the term “smoothstep function” refers to acomputer algorithm that interpolates between data points. In particular,a smoothstep function can analyze an input between a minimum thresholdand a maximum threshold and interpolate, using a Hermite polynomial,between two numbers (e.g., 0 and 1). For example, a smoothstep functioncan analyze a shoulder angle between a first transition angle and asecond transition angle and interpolate between two numbers (e.g., 0and 1) that are utilized as a weight to blend between two IK solutions.Additionally, by weighting based on proximity of the shoulder angle tothe outer boundaries of the blending region (e.g., the transition anglesof the first angle and the second angle), the smoothstep function mayskew the modified elbow position towards one of the first elbow positionor the second elbow position.

As used herein, the term “arm length” refers to a measure of length ofan arm of an animated character. In particular, the arm length mayinclude a distance of the arm that spans from the shoulder to the elbowjoint and from the elbow joint to the hand of the animated character.

In addition, as used herein, the term “art layer” refers to a renderinglayer. In particular, the art layer may include a digital image orrendering portraying a portion of an animated character. For example, anart layer of an arm can include a digital image of the arm (e.g., an armshowing the front of the forearm, the back of the forearm, or the sideof the forearm). As described in greater detail below, different artlayers can be associated with different shoulder angles within ablending region.

Additional detail will now be provided regarding the character animationsystem in relation to illustrative figures portraying exampleembodiments and implementations of the character animation system. Forexample, FIG. 1 illustrates an environment for implementing a characteranimation system 102 in accordance with one or more embodiments. Asshown in FIG. 1, the environment includes server(s) 104, a client device108, and a network 112. Each of the components of the environment cancommunicate via the network 112, and the network 112 may be any suitablenetwork over which computing devices can communicate. Example networksare discussed in more detail below in relation to FIG. 7.

As mentioned, the environment includes a client device 108. The clientdevice 108 can be one of a variety of computing devices, including asmartphone, tablet, smart television, desktop computer, laptop computer,virtual reality device, augmented reality device, or other computingdevice as described in relation to FIG. 7. Although FIG. 1 illustrates asingle client device 108, in some embodiments the environment caninclude multiple different client devices, each associated with adifferent user. The client device 108 can further communicate with theserver(s) 104 via the network 112. For example, the client device 108can receive user input and provide the information pertaining to userinput (e.g., edits to a digital animation, animated characterpreferences, etc.) to the server(s) 104.

As shown, the client device 108 includes a client application 110. Inparticular, the client application 110 may be a web application, anative application installed on the client device 108 (e.g., a mobileapplication, a desktop application, etc.), or a cloud-based applicationwhere part of the functionality is performed by the server(s) 104. Theclient application 110 can present or display information to a user,including digital content as part of a digital content editingapplication, such as a digital animation application. A user caninteract with the client application 110 to provide user input to, forexample, modify a digital animation of an animated character. Forexample, the client application 110 can provide a digital animation userinterface including various editing tools and menus, such as options toselect and drag objects as desired (e.g., to move a hand of an animatedcharacter and correspondingly move an arm of the animated character).

As illustrated in FIG. 1, the environment includes the server(s) 104.The server(s) 104 may generate, store, receive, and transmit electronicdata, such as executable instructions for naturally positioning an armof an animated character by blending IK solutions. For example, theserver(s) 104 may receive data from the client device 108 in the form ofuser input to move a hand of an animated character from a first positionto a second position. In turn, the server(s) 104 can transmit data tothe client device 108 to provide a modified digital animation of ananimated character. The server(s) 104 can communicate with the clientdevice 108 to transmit and/or receive data via the network 112. In someembodiments, the server(s) 104 comprises a content server. The server(s)104 can also comprise an application server, a communication server, aweb-hosting server, a social networking server, or a digital contentmanagement server.

Although FIG. 1 depicts a character animation system 102 located on theserver(s) 104, in some embodiments, the character animation system 102may be implemented by on one or more other components of the environment(e.g., by being located entirely or in part at one or more of the othercomponents). For example, the character animation system 102 may beimplemented by the client device 108 and/or a third-party device.

As shown in FIG. 1, the character animation system 102 is implementedwithin a digital content management system 106 located on the server(s)104. The digital content management system 106 can edit, create, manage,and/or transmit digital animations with animated characters.

In some embodiments, though not illustrated in FIG. 1, the environmentmay have a different arrangement of components and/or may have adifferent number or set of components altogether. For example, theenvironment may include a third-party server (e.g., for storing animatedcharacters or other data). As another example, the client device 108 maycommunicate directly with the character animation system 102, bypassingthe network 112.

As discussed above, the character animation system 102 can morenaturally depict an arm of an animated character relative toconventional systems. For example, FIG. 2A illustrates a computingdevice 200 rendering frames of an animated character 202 in a digitalanimation utilizing a conventional system. As shown in FIG. 2A, theconventional system generates the animated character 202 with an elbowposition in an awkward, unnatural position based on a shoulder position206. In particular, FIG. 2A illustrates results following user inputmodifying a wrist position 204 a in an initial frame 201 to a wristposition 204 b (with the shoulder position 206 remaining constant) in asubsequent frame 203. As shown, in the subsequent frame 203, theconventional system generates an elbow position 208 with a bendingdirection that appears distorted and unnatural. Specifically, theconventional system places the elbow in the subsequent frame 203approximately mid-torso with an incorrect bend direction, therebycreating an abnormal arm configuration for the animated character 202.Thus, as illustrated in FIG. 2A, although conventional systems canposition limbs, they often fail to accurately and naturally placeintermediate joints (such as an elbow) to generate natural armconfigurations.

In contrast, FIG. 2B illustrates the character animation system 102rendering a representation of an animated character 212 in a digitalanimation via a computing device 210 in accordance with one or moreembodiments. As shown in FIG. 2B, the character animation system 102receives user input modifying the wrist position 204 a in an initialframe 211 to the wrist position 204 b in a subsequent frame 213 (withoutmovement of the shoulder position 206). In response, the characteranimation system 102 generates the animated character 212 with amodified elbow position 214 and corresponding bending direction.

Specifically, the character animation system 102 identifies two IKsolutions corresponding to the wrist position 204 b and the shoulderposition 206. The character animation system 102 identifies a shoulderangle and determines that the shoulder angle falls below a shoulderangle limit. In response to determining that the shoulder anglesatisfies (e.g., falls below or exceeds) a shoulder angle limit, thecharacter animation system 102 selects a bending direction (e.g., an IKsolution corresponding to an inward/downward bending direction).

In addition, the character animation system 102 determines that theshoulder angle falls within a blending region. Accordingly, in additionto determining an inward blending direction, the character animationsystem 102 blends the two IK solutions based on the shoulder angle.Specifically, the character animation system 102 places the elbow to theside of the torso and dynamically blends the IK solutions as theanimated character 202 transitions through the blending region to createa smooth, natural transition. In this manner, the character animationsystem 102 can create realistic, natural movements through differentframes of a character animation.

Although FIG. 2B illustrates the character animation system 102generating a modified elbow position and bending direction based onmovement of a wrist joint toward the torso of the animated character202, the character animation system 102 can generate a modified elbowposition based on different movements of various joints within a digitalanimation. For example, in response to movement of a wrist joint in anupward direction, the character animation system 102 can determine anupward bending direction and blend IK solutions as the wrist joint movesupward through the blending region. Similarly, the character animationsystem 102 can determine movement of a shoulder joint to a new positionand determine a modified elbow joint position by blending IK solutionsbased on the new shoulder joint position and wrist position.

As just discussed, the character animation system 102 can generate andblend IK solutions. For instance, FIG. 3A illustrates two example IKsolutions identified by the character animation system 102 for a givenwrist and shoulder position, in accordance with one or more embodiments.Specifically, FIG. 3A shows a first IK solution 302 and a second IKsolution 304 based on a shoulder position 306 and a wrist position 308.As shown in FIG. 3A, the first IK solution 302 includes a first upperarm position 312 a, a first elbow position 310 a, and a first forearmposition 314 a based on the shoulder position 306 and the wrist position308. Further, the second IK solution 304 includes a second upper armposition 312 b, a second elbow position 310 b, and a second forearmposition 314 b based on the shoulder position 306 and the wrist position308. In particular, the first IK solution 302 results in a first(outward/upward) bend direction of the arm, and the second IK solution304 results in a second (inward/downward) bend direction of the arm.

The character animation system 102 generates the first IK solution 302and the second IK solution 304 based on geometric and/or trigonometricrelationships. For example, by positionally constraining the shoulderposition 306 and the wrist position 308, and by constraining lengths ofthe upper arm and forearm, the animated character may include twopotential upper arm positions (e.g., the first upper arm position 312 aand the second upper arm position 312 b), two potential elbow positions(e.g., the first elbow position 310 a and the second elbow position 310b), and two potential forearm positions (e.g., the first forearmposition 314 a and the second forearm position 314 b). In this manner,at least two IK solutions may exist for each pair of shoulder position306 and wrist position 308.

As mentioned, the character animation system 102 can utilize an inversekinematic algorithm to generate the first IK solution 302 and the secondIK solution 304. An inverse kinematic algorithm can model an animatedcharacter as a skeleton of rigid segments connected with joints,referred to as a kinematic chain. Given fixed positions/angles of somejoint positions, an inverse kinematic algorithm can determine jointangles/positions of other joints within the kinematic chain subject toone or more constraints (e.g., limb length). Specifically, in someembodiments, the character animation system 102 may use an analyticsolver that receives as input an end pose (e.g., a user-defined positionfor a shoulder joint and/or wrist joint of the animated character) andprovides joint positions as output. An example of an analytic solverincludes IKFast that can analytically solve the kinematics equations ofa complex kinematics chain.

In some embodiments, the character animation system 102 may approximatesolutions to IK systems using iterative optimization. In one type ofapproximation and/or optimization method, the character animation system102 can use the Jacobian inverse technique to determine an IK solution.In other embodiments, the character animation system 102 can determineIK solutions using heuristic methods. Under heuristic methods, thecharacter animation system 102 can perform iterative operations togradually lead to an approximation of the IK solution. Some exampleheuristic algorithms are the Cyclic Coordinate Descent algorithm and theForward And Backward Reaching Inverse Kinematics algorithm. In these orother embodiments, inverse kinematic algorithms may not produce twoguaranteed solutions (e.g., the algorithms may not produce two finite,analytical solutions). In such circumstances, the character animationsystem 102 can set up and constrain IK systems (e.g., constrain theinverse kinematic algorithm to particular bending directions or limits).For example, the character animation system 102 can set up two (or more)IK systems (each subject to particular constraints, such as bendingdirection), solve the constrained IK systems, and blend their results.

Although not illustrated in FIG. 3A, in some embodiments, an animatedcharacter may include multiple joints between the shoulder position 306and the wrist position 308 (hereafter “in-between joints”). In thisscenario, an inverse kinematic algorithm may not achieve an analyticalsolution for the multiple in-between joints. Similar to the approachedjust discussed, in some embodiments the character animation system 102may set up two (or more) constrained IK systems (e.g., to keep jointsbent in pre-determined directions, such as opposite directions). Thecharacter animation system 102 can solve the two (or more) constrainedIK systems to obtain a set of IK solutions, and blend the results.

Although not illustrated, in some embodiments, an animated character mayinclude no in-between joints (e.g., for an animated character having aflexible hose-like arm). In this scenario, the character animationsystem 102 may still blend elbow positions (i.e., elbow regions withoutan actual elbow joint). To illustrate, the character animation system102 can blend elbow positions of IK solutions by blending endpointrotations of a flexible limb. For example, the first upper arm position312 a and the first forearm position 314 a may form a first continuousIK solution without the first elbow position 310 a. Similarly, thesecond upper arm position 312 b and the second forearm position 314 bmay form a second continuous IK solution without the second elbowposition 310 b. Accordingly, the character animation system 102 mayblend the first continuous IK solution and the second continuous IKsolution by blending the endpoint rotations or angles of the arm (e.g.,blending the rotations of two IK solutions at the end of the flexiblearm member). The character animation system 102 can then generate ablended arm with a blended elbow position by blending the endpointrotations or angles.

As discussed above, the character animation system 102 can determine abending direction and/or blend IK solutions based on a shoulder angle.In particular, the character animation system 102 can select an IKsolution corresponding to a bend direction based on a shoulder angle anda shoulder angle limit. Moreover, the character animation system 102 canblend IK solutions within a blending region defined by a shoulder anglelimit and transition angles.

For instance, FIG. 3B illustrates a blending region 322 in accordancewith one or more embodiments. FIG. 3B shows the blending region 322 inrelation to other elements, including the shoulder position 306 and areference plane 316. In relation to FIG. 3B, the character animationsystem 102 defines the reference plane 316 based on a torso of ananimated character (e.g., the torso is aligned vertically, whichprovides a reference plane for the shoulder angle). In otherembodiments, the character animation system 102 defines the referenceplane 316 relative to an alternative source, such as a neck or head ofan animated character or a vertical or horizontal plane within a frame.

As mentioned above, the character animation system 102 can determine theblending region 322 based on a shoulder angle limit and transitionangles. Specifically, in relation to FIG. 3B, the character animationsystem 102 determines the center of the blending region 322 utilizing ashoulder angle limit 318 originating from the shoulder position 306 andrelative to the reference plane 316. Moreover, the character animationsystem 102 determines the boundaries of the blending region 322 based ona first transition angle 320 a and a second transition angle 320 b.Specifically, the character animation system 102 appends the firsttransition angle 320 a below the shoulder angle limit 318 and appendsthe second transition angle 320 b above the shoulder angle limit 318 todefine the blending region 322. As shown, this results in a blendingregion 322 comprising a range of angles defined by the shoulder anglelimit 318 and the transition angles 320 a, 320 b and surrounded by afirst non-blending region 325 and a second non-blending region 326.

As mentioned above, the character animation system 102 can determine abending direction utilizing the shoulder angle limit. For example, whena shoulder angle falls above the shoulder angle limit 318, the characteranimation system 102 can select/emphasize an IK solution that results inan upward/outward bending direction (e.g., the elbow bending away fromthe torso). Similarly, when a shoulder angle falls below the shoulderangle limit 318, the character animation system 102 can select/emphasizean IK solution that results in a downward/inward bending direction(e.g., the elbow bending toward the torso).

In addition, the character animation system 102 can blend IK solutionsbased on the shoulder angle limit. As described in greater detail below,the character animation system 102 blends IK solutions when a shoulderangle falls within the blending region 322. Moreover, the characteranimation system 102 emphasizes and/or weights IK solutions based on theposition of the shoulder angle within the blending region. Moreover, insome embodiments the character animation system 102 does not blend IKsolutions when a shoulder angle falls within the first non-blendingregion 325 or the second non-blending region 326. Rather, in theseregions the character animation system 102 selects an IK solution withan appropriate bending direction based on the current shoulder anglerelative to shoulder angle limit.

In some embodiments, the character animation system 102 generates ablending region 322 with a different or modified size than illustratedin FIG. 3B. For example, the character animation system 102 can alterthe first transition angle 320 a and/or the second transition angle 320b to be bigger angles or smaller angles, thereby changing the blendingregion 322 and where the character animation system 102 blends IKsolutions. For instance, as the blending region 322 decreases in size,the character animation system 102 may transition between IK solutionsmore abruptly, such that character animation system 102 blends ortransitions through a smaller area when a shoulder angle moves throughthe blending region 322. Additionally or alternatively, as the blendingregion 322 increases in size, the character animation system 102 maytransition between IK solutions more gradually such that the characteranimation system 102 blends or transitions through a larger area as ashoulder angle moves through the blending region 322.

Further, in some embodiments, the character animation system 102generates the shoulder angle limit 318 with a different or modified sizerelative to the reference plane 316 than illustrated in FIG. 3B. Forexample, the character animation system 102 can alter the shoulder anglelimit 318 to a bigger angle or a smaller angle, thereby changing wherethe shoulder angle falls within the blending region 322 and where thecharacter animation system 102 blends IK solutions. For instance, as theshoulder angle limit 318 decreases, the character animation system 102may blend IK solutions at lower shoulder angles (e.g., at more acuteshoulder angles relative to the reference plane 316). Additionally oralternatively, as the shoulder angle limit 318 increases, the characteranimation system 102 may blend IK solutions at higher shoulder angles(e.g., at more obtuse shoulder angles relative to the reference plane316).

In some embodiments, the character animation system 102 includes morethan one shoulder angle limit 318. For example, to simulate an animatedcharacter rotating through the elbow joint when an animated charactermoves an arm above the head, the character animation system 102 canutilize a second shoulder angle limit. Thus, though FIG. 3B illustratesa single shoulder angle limit 318, the character animation system 102may include additional shoulder angle limits to achieve a morefine-grained, character-specific tuning of arm.

The character animation system 102 can determine the blending region322, the shoulder angle limit 318, the first transition angle 320 a,and/or the second transition angle 320 b based on a variety of factors.For example, in some circumstances, the character animation system 102automatically determines the blending region 322, the shoulder anglelimit 318, the first transition angle 320 a, and/or the secondtransition angle 320 b based on prior digital animations (e.g., byanalyzing how historical animations transitioned from an upward bendingangle to a lower bending angle). In some embodiments, the characteranimation system 102 determines the blending region 322, the shoulderangle limit 318, the first transition angle 320 a, and/or the secondtransition angle 320 b based on user input. For example, the characteranimation system 102 can provide user interface elements for selectionand modification of the blending region 322, the shoulder angle limit318, the first transition angle 320 a, and/or the second transitionangle 320 b. In some embodiments, the character animation system 102utilizes pre-defined values, historical selections, and/orcharacteristics of an animated character (e.g., character dimensions,height, width, or arm length) to determine the blending region 322, theshoulder angle limit 318, the first transition angle 320 a, and/or thesecond transition angle 320 b.

In some embodiments, the first transition angle 320 a and the secondtransition angle 320 b are the same. In other embodiments, the firsttransition angle 320 a and the second transition angle are different.Regardless, as used herein, transition angle can refer to a range ofangles defining a blending region (e.g., the range of angles within ablending region). For example, the transition angle(s) can define arange of angles between a first angle (e.g., a first angle defining thestart of the blending region) and a second angle (e.g., a second angledefining the end of the blending region).

As discussed above, the character animation system 102 can blend IKsolutions when a shoulder angle falls within the blending region 322.For example, FIGS. 3C-3G, illustrate the character animation system 102generating different frames of a digital animation based on differentshoulder angles and a blending region in accordance with one or moreembodiments. Specifically, in relation to FIGS. 3C-3G, the characteranimation system 102 generates a digital animation where a shoulderangle begins outside a blending region and moves through the blendingregion. In particular, the character animation system 102 generates anelbow position using a first bending direction and first IK solution(when the shoulder angle falls outside the blending region), blends IKsolutions within the bending region, and then transitions to a secondbending direction and second IK solution after moving through theblending region.

For example, FIG. 3C illustrates a computing device 331 displaying arepresentation of an animated character 333 in a first frame 335 of adigital animation. As shown, for the first frame 335, the characteranimation system 102 receives user input indicating a shoulder position336 for a shoulder of the animated character 333 and indicating a wristposition 338 for a wrist of the animated character 333. In response, thecharacter animation system 102 determines one or more IK solutionscorresponding to the shoulder position 336 and the wrist position 338.Specifically, in relation to FIG. 3C, the character animation system 102determines a first IK solution 332 corresponding to a first elbowposition 330 a and a first shoulder angle 334 a. Moreover, the characteranimation system 102 determines a second IK solution corresponding to asecond elbow position 330 b.

As shown, the first shoulder angle 334 a does not fall within theblending region 322. Moreover, the first shoulder angle 334 a fallsabove the shoulder angle limit 318. Therefore, the character animationsystem 102 does not blend the first elbow position 330 a and the secondelbow position 330 b. Rather, as shown in FIG. 3C, because the firstshoulder angle 334 a is above the shoulder angle limit 318, thecharacter animation system 102 selects the first IK solution 332(corresponding to an upward/outward bending direction) and the firstelbow position 330 a.

Upon determining the shoulder angle 330 a and the first elbow position330 a, the character animation system 102 can generate therepresentation of the animated character 333. In particular, thecharacter animation system 102 generates and provides the representationof the animated character 333 for display with a shoulder located in theshoulder position 336, an elbow in the first elbow position 330 a, and awrist in the wrist position 338.

As mentioned above, the character animation system 102 can detectmovement of a shoulder angle into a blending region and generate arepresentation of an animated character reflecting a blended elbowposition. As shown in FIG. 3D, the character animation system 102receives additional user input moving the wrist position 338 to a wristposition 348. In response, the character animation system 102 determinesa first IK solution corresponding to a first elbow position 340 a and afirst shoulder angle 344 a. Moreover, the character animation system 102determines a second IK solution corresponding to a second elbow position340 b.

As illustrated in FIG. 3D, the first shoulder angle 344 a falls withinthe blending region 322. In response to determining that the firstshoulder angle 344 a falls within the blending region 322, the characteranimation system 102 blends the first elbow position 340 a and thesecond elbow position 340 b. For instance, FIG. 3E illustrates thecharacter animation system 102 generating a blended IK solution 345including a modified elbow position 340 c positioned between the firstelbow position 340 a and the second elbow position 340 b. As shown, theblended IK solution 345 includes the shoulder position 336, the modifiedelbow position 340 c, and the wrist position 348, which forms a modifiedshoulder angle 344 c.

The character animation system 102 can blend two IK solutions in avariety of ways. For example, in some embodiments, the characteranimation system 102 blends elbow positions by starting from a firstelbow position (of a first IK solution) and adding a weighted amount ofthe distance between the first elbow position and the second elbowpositions. Similarly, in some embodiments, the character animationsystem 102 blends elbow positions by taking a weighted average of thetwo elbow positions. The character animation system 102 can combine twoelbow positions utilizing various different approaches.

As just mentioned, the character animation system 102 can weight two IKsolutions. For example, in some embodiments, the character animationsystem 102 weights two IK solutions based on where a shoulder anglefalls relative to the blending region (e.g., relative to the firsttransition angle 320 a, the second transition angle 320 b, and/or theshoulder angle limit 318 of FIG. 3B). To illustrate, in some embodimentsthe character animation system 102 blends IK solutions using asmoothstep function based on the shoulder angle relative to the blendingregion. In particular, the character animation system 102 can provide afirst transition (start) angle and a second transition (stop) angle of ablending region together with the shoulder angle to a smooth stepfunction. As discussed above, the smoothstep function can analyze theshoulder angle relative to the start angle and stop angle of theblending region and generate a blending weight between 0 and 1.Accordingly, the character animation system 102 can utilize thesmoothstep function to smoothly vary the blending weight between IKsolutions as the shoulder angle varies within the blending region.

In relation to FIG. 3E, the character animation system 102 utilizes thissmoothstep approach. For instance, FIG. 3E shows the modified elbowposition 310 c closer to the first elbow position 340 a than the secondelbow position 340 b. In relation to FIG. 3E, because the first shoulderangle 344 a exceeds the shoulder angle limit 318, the characteranimation system 102 emphasizes the first elbow position 340 a (e.g., afirst IK solution 342 corresponding to an upward/outward bendingdirection) more heavily than the second elbow position 340 b (e.g., asecond IK solution 346 corresponding to a downward/inward bendingdirection). Specifically, because the first shoulder angle 344 a fallsless than half-way through the blending region 322, the characteranimation system 102 weights the first IK solution 342 more heavily thanthe second IK solution 346 in generating the blended IK solution 345.

In some embodiments, when the first shoulder angle is the same as theshoulder angle limit 318, the character animation system 102 generates ablended IK solution by equally blending between the first IK solutionand the second IK solution. Additionally or alternatively, when a firstshoulder angle is positioned below the shoulder angle limit 318, thecharacter animation system 102 generates a blended IK solutionpositioned closer to the second IK solution than the first IK solution.In this manner, the character animation system 102 weights the blendingof the first IK solution and the second IK solution based on positioningof the first shoulder angle within the blending region 322.

Similarly, FIG. 3E shows that the modified shoulder angle 344 c islarger (relative to the reference plane 316) than the first shoulderangle 344 a for the first IK solution 342, yet smaller than the secondshoulder angle 344 b for the second IK solution 346. In particular,because the first shoulder angle 344 a is positioned less than half-waythrough the blending region 322, the character animation system 102generates the modified shoulder angle 344 c closer (angle-wise) to thefirst shoulder angle 344 a than the second shoulder angle 344 b. In someembodiments, when the first shoulder angle is the same as the shoulderangle limit 318, the character animation system 102 generates themodified shoulder angle approximately equi-distant to the first shoulderangle and the second shoulder angle.

As discussed above, in blending IK solutions, the character animationsystem 102 can dynamically modify arm length to synthesize theappearance of three-dimensional rotation through the elbow joint. Forexample, FIG. 3E shows that the blended IK solution 345 has a shorterarm length (e.g., distance along the arm from the shoulder position 336,to the modified elbow position 340 c, and to the wrist position 348)than both of the first IK solution 342 and the second IK solution 346.That is, by positionally constraining the shoulder position 336 and thewrist position 348, and by constraining lengthwise a potential upper armand a potential forearm, the character animation system 102 generatesthe first IK solution 342 and the second IK solution 346 with equal armlengths. By blending the first IK solution 342 and the second IKsolution 346 to generate the modified elbow position 340 c, thecharacter animation system 102 shortens forearm length and/or the upperarm length. Indeed, the distance from the shoulder position 336 to themodified elbow position 340 c (and/or the distance from the modifiedelbow position 340 c to the wrist position 348) is shorter than thedistance from the shoulder position 336 to the second elbow position 340b (and/or the distance from the second elbow position 340 b to the wristposition 348).

Further, upon determining the modified elbow position 340 c, thecharacter animation system 102 can generate a representation of theanimated character 333 in a pose corresponding to the modified elbowposition 340 c. For example, FIG. 3E illustrates the computing device331 portraying the animated character 333 in a subsequent frame 347 of adigital animation. In particular, the subsequent frame 347 shows theanimated character 333 with an arm configuration that depicts theblended IK solution 345. As shown, the character animation system 102generates the animated character 333 with the shoulder position 336, themodified elbow position 340 c, and the wrist position 348.

As discussed above, as a shoulder angle moves through a blending regionthe character animation system 102 can dynamically blend IK solutionsusing different weights to smoothly transition from one bendingdirection to another. For instance, FIG. 3F illustrates the characteranimation system 102 generating a blended IK solution 355 (i.e., an IKsolution with a different bending direction than FIG. 3E).

Specifically, in relation to FIG. 3F, the character animation system 102identifies user input of a new wrist position 358 (while leaving theshoulder position 336 in place). In response, the character animationsystem 102 determines a first IK solution 352 having a first elbowposition 350 a and a first shoulder angle 354 a. Moreover, the characteranimation system 102 determines a second IK solution 356 having a secondelbow position 350 b. FIG. 3F illustrates that the first shoulder angle354 a now falls below the shoulder angle limit 318. Accordingly, thecharacter animation system 102 generates an arm with a bending directionopposite to the bending direction illustrated in FIG. 3E.

Specifically, FIG. 3F illustrates the character animation system 102blending the first IK solution 352 and the second IK solution 356 togenerate a modified elbow position 350 c. Because first shoulder angle354 a falls below the shoulder angle limit 318, the character animationsystem 102 weights the second IK solution 356 more heavily than thefirst IK solution 352. Specifically, based on where the first shoulderangle 354 a falls within the blending region 322 (e.g., relative to theshoulder angle limit, a first start angle, and/or a second stop angle),the character animation system 102 identifies the modified elbowposition 350 c by blending the first elbow position 350 a and the secondelbow position 350 b while placing greater emphasis on the second elbowposition 350 b.

Similarly, FIG. 3F illustrates that the first shoulder angle 354 a ispositioned more than half-way through the blending region 322.Therefore, the character animation system 102 generates the modifiedshoulder angle 354 c closer (angle-wise) to the second shoulder angle354 b than the first shoulder angle 354 a. In this manner, the characteranimation system 102 modifies shoulder angles of the animated characterwithin the blending region 322 by blending the first IK solution 352 andthe second IK solution 354. Specifically, the character animation system102 weights the blending of the first IK solution 352 and the second IKsolution 354 based on where the first shoulder angle 354 a falls withinthe blending region 322.

Further, FIG. 3F (like FIG. 3E) shows that the blended IK solution 356has a shorter arm length than the first IK solution 352 and the secondIK solution 354. That is, by blending the first IK solution 352 and thesecond IK solution 354, the character animation system 102 generates themodified elbow position 350 c such that a distance between the shoulderposition 336 and the modified elbow position 350 c is less than adistance from the shoulder position 336 to the first elbow position 350a or the second elbow position 350 b. Similarly, by blending the firstIK solution 352 and the second IK solution 356, the character animationsystem 102 generates the modified elbow position 350 c such that adistance between the wrist position 358 and the modified elbow position350 c is less than a distance from the wrist position 358 to the firstelbow position 350 a or the second elbow position 350 b.

Upon determining the modified elbow position 350 c, the characteranimation system 102 generates and provides for display a representationof the animated character 333 in a new pose. For example, FIG. 3F showsthe computing device 331 displaying an additional frame 357 of a digitalanimation. As shown, the character animation system 102 generates theframe 357 with the animated character 333 based on the shoulder position336, the modified elbow position 350 c, and the wrist position 358.

As discussed above, the character animation system 102 can blend IKsolutions when a shoulder angle falls within a blending region, but cancease blending when a shoulder angle falls outside a blending region.For example, FIG. 3G illustrates the character animation system 102generating an animated character after a shoulder angle has movedoutside a blending region in accordance with one or more embodiments.

Specifically, in relation to FIG. 3G, the character animation system 102identifies user input of a wrist position 368 (without modification tothe shoulder position 336). In response, the character animation system102 determines a first IK solution having a first elbow position 360 aand first shoulder angle 364 a. In addition, the character animationsystem 102 determines a second IK solution 366 having a second elbowposition 360 b. As illustrated, the character animation system 102determines that the first shoulder angle 364 a is below the shoulderangle limit 318 and falls outside the blending region 322.

Because the first shoulder angle 364 a falls outside the blending region322, the character animation system 102 does not blend IK solutions.Moreover, because the first shoulder angle falls below the shoulderangle limit 318, the character animation system 102 utilizes the secondIK solution 366 having the second elbow position 360 b (corresponding toan inward/downward direction). Accordingly, as shown in FIG. 3G, thecharacter animation system 102 utilizes the (unblended) second IKsolution 366, which proceeds from the shoulder position 336, to thesecond elbow position 360 b, and to the wrist position 368.

Further, as illustrated in FIG. 3G, the character animation system 102generates (and provides for display) the animated character 333 based onthe wrist position 368. In particular, FIG. 3 illustrates the computingdevice 331 displaying a further frame 367 of a digital animation thatincludes the animated character 333 in a modified pose. As shown, thecharacter animation system 102 generates the animated character 333utilizing the shoulder position 336, the second elbow position 360 b ofthe second IK solution 366, and the wrist position 368.

In sum, FIGS. 3C-3G illustrate multiple frames of an animated sequencegenerated by the character animation system 102 as part of an animationsequence. Specifically, the frames illustrate a representation of ananimated character in different poses in response to user modificationof a wrist position of the animated character 333. By determiningdifferent shoulder angles in relation to the blending region 322 and theshoulder angle limit 318, the character animation system 102 generatesanimated characters with realistic bending directions and smooth,natural transitions as part of an overarching animation sequence.

Although FIGS. 3C-3G illustrate a specific sequence of armconfigurations, the character animation system 102 can generate avariety of different configurations in different sequences. For example,a shoulder angle of an animated character may proceed through theblending region 322 in an upward motion (e.g., opposite the downwardmotion depicted in FIGS. 3C-3G) or in a variety of differentcombinations of motion sequences (e.g., in an upward motion followed bya downward motion.

In addition, although FIGS. 3C-3G illustrate utilizing a particularshoulder angle (e.g., a first shoulder angle corresponding to a first IKsolution) in relation to the blending region 322, the characteranimation system 102 can utilize a variety of alternative shoulderangles. For example, rather than utilizing the first shoulder angle 354a to determine if a shoulder angle of the animated character fallswithin the blending region 322 (or falls above or below the shoulderangle limit 318), in some embodiments, the character animation system102 utilizes the second shoulder angle (e.g., the second shoulder angle344 b or 354 b) to determine if a shoulder angle of the animatedcharacter falls within the blending region 322 (or falls above or belowthe shoulder angle limit 318). In some embodiments, the characteranimation system 102 utilizes both the first shoulder angle and thesecond shoulder angle to determine if a shoulder angle falls within theblending region 322 (e.g., blend IK solutions if either or both of thefirst shoulder angle 354 a and the second shoulder angle 354 b fallwithin the blending region 322).

In addition to the algorithms and acts described above, the characteranimation system 102 can also be described in terms of pseudocodeimplemented by a computing device (e.g., the server(s) 104, the clientdevice 108, and/or the computing device 331). For example, given awristPos (user-animated 2D position such as the wrist position 358),shoulderPos (2D position such as the shoulder position 336), angleLimit(user parameter to control when to transition to alternate IK solutions,such as the shoulder angle limit 318), transitionAngle (user parameterto control smoothness of transition, such as the transition angles 320a, 320 b of FIG. 3B) the character animation system 102 can computeelbowPosFinal (2D position such as modified elbow position 350 c) fornatural arm bend using the following example pseudocode implemented by acomputing device:

-   elbowPos1, elbowPos2=twoLinkIK(shoulderPos, wristPos)-   upArmVec=elbowPos1−shoulderPos-   shoulderAngle=atan2(upArmVec[1], upArmVec[0])-   blendWeight=smoothstep(angleLimit−transitionAngle,    angleLimit+transitionAngle, shoulderAngle)-   elbowPosFinal=blendWeight*(elbowPos2−elbowPos1)+elbowPos1,-   where twoLinkIK( ) is an inverse kinematic algorithm (as described    above), elbowPos1 is a first elbow position of a first IK solution    (e.g., first elbow position 350 a), elbowPos2 is a second elbow    position of a second IK solution (e.g., second elbow position 350    b), upArmVec is a vector representation of an upper arm,    shoulderAngle is a shoulder angle (e.g., the first shoulder angle    354 a), blendweight is a blending weight between elbowPos1 and    elbowPos2, and positions/angles are relative to a local reference    plane (e.g., relative to the torso of the animated character as    opposed to world coordinates).

Although FIGS. 3C-3G illustrate a single shoulder angle limit, asmentioned above, the character animation system 102 can utilize multipleshoulder angle limits. For instance, to maintain continuity when an armis in an upward position, the character animation system 102 can includea first shoulder angle limit (as illustrated in FIGS. 3C-3G in a lowersemi-circle relative to an animated character) and a second shoulderangle limit (in an upper semi-circle relative to the animatedcharacter).

For instance, the character animation system may impose a first shoulderangle limit for a first region and a second shoulder angle limit for asecond region (e.g., for a first region comprising an angle range fromzero to one hundred eighty degrees relative to the reference plane 316and a second region comprising an angle range from one hundred eightydegrees to three hundred sixty degrees relative to the reference plane316). Similarly, in some embodiments the character animation system 102includes a first shoulder angle limit (e.g., the shoulder angle limit318) and a second shoulder angle limit extending from the shoulderposition 306 in the opposite direction of the first shoulder angle limitsuch that the first shoulder angle limit and the second shoulder anglelimit form a line.

In some embodiments, the character animation system 102 can set thefirst shoulder angle limit (and corresponding transition angles)independently of a second should angle limit (and correspondingtransition angles). For instance, the character animation system 102 canprovide selectable elements via a user interface for modifying a firstshoulder angle limit, a first corresponding transition angle, a secondshoulder angle limit, and a second corresponding transition angle. Insome embodiments, the shoulder angle limits and the transition anglesare predetermined. In one or more embodiments, the shoulder angle limitsand the transition angles are automatically determined based on theanimated character, user history, or other factors.

In sum, the character animation system 102 may impose a variety ofshoulder angle limits to create continuity, realism, and/orcharacter-specific arm movement as an animated character rotates througha full 360 degree range of motion of the shoulder joint and rotates theelbow joint and bend direction of the arm in response.

As mentioned above, the character animation system 102 can switchbetween art layers as a shoulder angle of the animated character movesthrough a blending region. For instance, FIG. 4 illustrates thecharacter animation system 102 utilizing art layers 400 a-400 c throughthe blending region 322 in accordance with one or more embodiments.Specifically, FIG. 4 shows three example switch points 402 a-402 c ofthe blending region 322 that correspond to respective art layers 400a-400 c depicting an example hand 404 in various example orientations.

As shown in FIG. 4, the character animation system 102 switches betweenart layers 400 a-400 c at distinct switch points 402 a-402 c of theblending region 322. However, in accordance with one or more embodimentsof the present disclosure, the character animation system 102 mayimplement more or fewer art layers and/or switch points than areexpressly illustrated in FIG. 4. For example, in some embodiments, thecharacter animation system 102 cycles through a series of art layerseach respectively associated with distinct arm orientations of theanimated character. As a shoulder angle of the animated character passesthrough the blending region 322, the shoulder angle may satisfy one ormore of the switch points that correspond to an art layer in the seriesof art layers. Further, as the number of art layers increases, thecharacter animation system 102 may create a more realistic movementeffect, including a three-dimensional arm motion effect.

In some embodiments, the character animation system 102 depicts othergraphics, objects, and/or portions of an animated character arm in oneor more of the art layers 400 a-400 c. For example, the first art layer400 a may depict a forearm, the second art layer 400 b may depict asidearm, and the third art layer 400 c may depict an underarm. Inanother example, the first art layer 400 a may depict a first portion ofa tattoo on the animated character arm, the second art layer 400 b maydepict a second portion of the tattoo on the animated character arm, andthe third art layer 400 c may depict a third portion of the tattoo onthe animated character arm. In this manner, the character animationsystem 102 may simulate a rolling or twisting of the arm as the bendingdirection of the arm changes, e.g., within the blending region 322.

Turning now to FIG. 5, additional detail is provided regardingcomponents and capabilities of the character animation system 102 inaccordance with one or more embodiments. As shown, the characteranimation system 102 is implemented by the computing device 500,including the digital content management system 106 of the computingdevice 500. In other embodiments, the components of the characteranimation system 102 can be implemented by a single device (e.g., theserver(s) 104 and/or the client device 108 of FIG. 1) or other devices.As shown, the character animation system 102 includes a body positionmanager 502, an inverse kinematic solution manager 504, a blendingmanager 506, an animated character generator 508, a user interfacemanager 510, and a storage manager 512. Each is discussed in turn below.

The body position manager 502 can identify, determine, receive, and/orgenerate positions of different parts of an animated character. Forexample, the body position manager 502 can identify a wrist position, ashoulder position, a shoulder angle, and/or any other portions of theanimated character. Additionally or alternatively, the body positionmanager 502 can identify one or more vectors relative to body positions.

The inverse kinematic solution manager 504 can identify, determine,and/or generate IK solutions that include elbow positions of an animatedcharacter. For example, based on the wrist position and the shoulderposition identified by the body position manager 502, the inversekinematic solution manager 504 can determine a first IK solution of afirst elbow position and a second IK solution of a second elbowposition. As described above, IK solutions include positional dataand/or parameters for a particular joint determined using an inversekinematic algorithm given positional data and/or parameters of otherjoints. More generally, inverse kinematics make use of kinematicequations to recover the movements of an object in the world from someother data. In the instant application, the inverse kinematic solutionmanager 504 may employ one or more types of methodologies to determinethe positional data and/or the parameters for a particular joint.

The blending manager 506 can identify, determine, and/or generate amodified elbow position by blending IK solutions obtained by the inversekinematic solution manager 504. The blending manager 506 can determine ashoulder angle (e.g., based on joint positions and IK solutionsdetermined by the body position manager 502 and the inverse kinematicsolution manager 504). Moreover, the blending manager 506 can blend IKsolutions based on the shoulder angle. In particular, the blendingmanager 506 blends IK solutions when the shoulder angle of the animatedcharacter is within a blending region. In these or other embodiments,the blending manager 506 blends IK solutions by utilizing a smoothstepfunction to weight at least one of the IK solutions based on proximityof the shoulder angle relative to the shoulder angle limit within theblending region. After the blending manager 506 determines the blendweight for IK solutions, the blending manager 506 can then determine themodified elbow position, as described above.

The animated character generator 508 can generate, create, render,and/or provide for display animated characters (or representations ofanimated characters) as described above. In particular, the animatedcharacter generator 508 can render a representation of an animatedcharacter with a modified elbow position as determined by the blendingmanager 506. In rendering the animated character with the modified elbowposition, the animated character generator 508 may shorten an arm lengthof the animated character relative to the first IK solution having afirst elbow position and relative to a second IK solution having asecond elbow position.

Further, in rendering the animated character with the modified elbowposition, the animated character generator 508 may render art layersthat are respectively associated with certain orientations of the arm ofthe animated character. For example, the animated character generator508 may determine switch points at which the art layers are triggeredfor display as the shoulder angle of the animated character movesthrough the blending region.

The user interface manager 510 can provide, manage, and/or control agraphical user interface (or simply “user interface”). In particular,the user interface manager 510 may generate and display a user interfaceby way of a display screen composed of a plurality of graphicalcomponents, objects, and/or elements that allow a user to perform afunction. For example, the user interface manager 510 can receive userinputs from a user, such as a click/drag to select a hand for moving anarm to edit a digital animation. Additionally, the user interfacemanager 510 can present a variety of types of information, includingtext, digital media items, animated characters generated by the animatedcharacter generator 508, or other information.

The storage manager 512 maintains data for the character animationsystem 102 at the client device 108. The storage manager 512 canmaintain data of any type, size, or kind, as necessary to perform thefunctions of the character animation system 102, including an animatedcharacter 514 and digital animations 516.

Each of the components 502-516 of the character animation system 102 caninclude software, hardware, or both. For example, the components 502-516can include one or more instructions stored on a computer-readablestorage medium and executable by processors of one or more computingdevices, such as a client device or server device. When executed by theone or more processors, the computer-executable instructions of thecharacter animation system 102 can cause the computing device(s) toperform the methods described herein. Alternatively, the components502-516 can include hardware, such as a special-purpose processingdevice to perform a certain function or group of functions.Alternatively, the components 502-516 of the character animation system102 can include a combination of computer-executable instructions andhardware.

Furthermore, the components 502-516 of the character animation system102 may, for example, be implemented as one or more operating systems,as one or more stand-alone applications, as one or more modules of anapplication, as one or more plug-ins, as one or more library functionsor functions that may be called by other applications, and/or as acloud-computing model. Thus, the components 502-516 may be implementedas a stand-alone application, such as a desktop or mobile application.Furthermore, the components 502-516 may be implemented as one or moreweb-based applications hosted on a remote server.

The components 502-516 may also be implemented in a suite of mobiledevice applications or “apps.” To illustrate, the components 502-516 maybe implemented in an application, including but not limited to ADOBE®CREATIVE CLOUD, such as ADOBE® CHARACTER ANIMATOR, ADOBE® ANIMATE,ADOBE® PHOTOSHOP, ADOBE® LIGHTROOM, ADOBE® ILLUSTRATOR, ADOBE® INDESIGN,ADOBE® AFTER EFFECTS, or ADOBE® DREAMWEAVER. Product names, including“ADOBE” and any other portion of one or more of the foregoing productnames, may include registered trademarks or trademarks of Adobe SystemsIncorporated in the United States and/or other countries.

FIGS. 1-5, the corresponding text, and the examples provide severaldifferent systems, methods, techniques, components, and/or devices ofthe character animation system 102 in accordance with one or moreembodiments. In addition to the above description, one or moreembodiments can also be described in terms of flowcharts including actsfor accomplishing a particular result. For example, FIG. 6 illustrates aflowchart of a series of acts 600, including a series of acts 610-624 ina step 606 for generating a representation of the animated character inaccordance with one or more embodiments. In particular, the acts 610-624can provide supporting acts, algorithms, and/or structure for a step forgenerating a representation of an animated character having a blendedmiddle joint position reflecting both a first inverse kinematic solutionof a first middle joint position and a second inverse kinematic solutionof a second middle joint position in accordance with one or moreembodiments. Moreover, the algorithms and acts described above (e.g., inrelation to FIGS. 2-3G) can provide the corresponding structure for astep for generating a representation of an animated character having ablended middle joint position reflecting both a first inverse kinematicsolution of a first middle joint position and a second inverse kinematicsolution of a second middle joint position.

As illustrated in FIG. 6, the character animation system 102 performs anact 602 to identify a user interaction to move an animated character.For example, the user interaction may include a user input to move oneor more portions of the animated character, such as a hand or wrist ofthe animated character. The character animation system 102 may identifythe user interaction as described in the preceding/subsequentdescription and corresponding figures, for example, to identifypositional movement of the animated character from an initial position.

The character animation system 102 further performs an act 604 toidentify, based on the user interaction, a first joint position and asecond joint position. In some embodiments, the first joint position isa wrist position. Additionally, the second joint position may include ashoulder position. Moreover, the character animation system 102 mayidentify the first joint position and the second joint position asdescribed in the present disclosure, for example, in thepreceding/subsequent description and corresponding figures.

The character animation system 102 further performs the step 606 forgenerating a representation of the animated character having a blendedmiddle joint position reflecting both a first inverse kinematic solutionof a first middle joint position and a second inverse kinematic solutionof a second middle joint position. The step 606 includes an act 610 toidentify a first 1K solution having a first middle joint position. Insome embodiments, the first middle joint position is an elbow position(e.g., a first elbow position) that corresponds to a first bendingdirection of the animated character arm. For example, the characteranimation system 102 may identify the first middle joint positionutilizing an inverse kinematic algorithm as described above (e.g., inrelation to FIG. 3A).

The character animation system 102 further performs in the step 606 anact 612 to identify a second 1K solution having a second middle jointposition. In some embodiments, the second middle joint position is anelbow position (e.g., a second elbow position) that corresponds to asecond bending direction of the animated character arm different fromthe first bending direction. For example, the character animation system102 may identify the second middle joint position as described above(e.g., in relation to FIG. 3A).

The character animation system 102 further performs in the step 606 anact 614 to determine a first joint angle based on the first jointposition and the first 1K solution. In some embodiments, the first jointangle is a first shoulder angle relative to a reference plane. Moreover,the character animation system 102 may determine the first joint anglebased on the first joint position and the first 1K solution as describedin the present disclosure, for example, in the preceding/subsequentdescription and corresponding figures.

The character animation system 102 further performs in the step 606 anact 616 to query whether the first joint angle is within a blendingregion. In some embodiments, the first joint angle is within theblending region when the first joint angle falls between a firsttransition angle and a second transition angle of the blending region.For example, the character animation system 102 may determine whetherthe first joint angle is within the blending region as described above(e.g., in relation to FIGS. 3B-3G).

If the character animation system 102 determines that the first jointangle falls within the blending region, then the character animationsystem 102 further performs in the step 606 an act 618 to determine ablended middle joint position by blending the first middle jointposition and the second middle joint position. In some embodiments, theblended middle joint position may include a blended elbow position.Additionally, the character animation system 102 can blend the firstmiddle joint position and the second middle joint position by weightingthe first IK solution and/or the second IK solution, e.g., according toa smoothstep function. In this manner, the character animation system102 positions the blended middle joint spatially between the firstmiddle joint position and the second middle joint position. For example,the character animation system 102 may determine the blended middlejoint position as described above (e.g., in relation to FIGS. 3D-3F).

If the character animation system 102 determines that the first jointangle falls within the blending region, then the character animationsystem 102 further performs in the step 606 an act 620 to generate arepresentation of the animated character having the blended middle jointposition. In some embodiments, the character animation system 102generates the representation of the animated character based on thefirst joint position, the second joint position, and the blended middlejoint position by generating a modified arm having a modified arm lengthdifferent from the initial arm length (e.g., as described above inrelation to FIGS. 3D-3F).

Alternatively, if the character animation system 102 determines at theact 616 that the first joint angle falls outside the blending region,then the character animation system 102 further performs in the step 606an act 622 to select the first IK solution or the second IK solutionbased on the first joint angle. In some embodiments, the characteranimation system 102 selects the first IK solution if the first jointangle falls within a first non-blending region below the blendingregion, or selects the second IK solution if the first joint angle fallswithin a second non-blending region above the blending region. Forexample, the character animation system 102 may select the first IKsolution or the second IK solution based on the first joint angle asdescribed above (e.g., in relation to FIGS. 3C, 3G) in the presentdisclosure, for example, as described in the preceding/subsequentdescription and corresponding figures.

If the character animation system 102 determines at the act 616 that thefirst joint angle falls outside the blending region, then the characteranimation system 102 further performs in the step 606 an act 624 togenerate a representation of the animated character having the selectedIK solution. In some embodiments, generating the representation of theanimated character having the selected IK solution includes generatingan arm of the animated character at the shoulder position and the wristposition in act 604 and the elbow position in either act 610 or 612.Moreover, the character animation system 102 may generate arepresentation of the animated character having the selected IK solutionas described in the present disclosure, for example, as described in thepreceding/subsequent description and corresponding figures (e.g., FIGS.3C, 3G).

After the character animation system 102 performs the step 606, thecharacter animation system 102 performs an act 626 to provide therepresentation of the animated character for display. In someembodiments, the character animation system 102 provides therepresentation of the animated character for display by outputting therepresentation of the animated character to a user interface as part ofa digital content editing application, such as a digital animationapplication.

Further illustrated in relation to the act 626, the character animationsystem 102 may repeat one or more acts in the series of acts 600 asshown by the arrow looping from the act 626 back to the act 602. In thismanner, the character animation system 102 can dynamically respond toon-the-fly edits to an animated character in a frame of a digitalanimation. For example, the character animation system 102 can receivefurther user interactions to move the animated character (e.g., a userinput dragging a hand of the animated character to a new location withinthe frame of the digital animation).

As mentioned, the character animation system 102 can determine amodified elbow position of an animated character by blending IKsolutions. For example, FIG. 7 illustrates a flowchart of a series ofacts 700 for determining a modified elbow position of an animatedcharacter in accordance with one or more embodiments. The characteranimation system 102 may perform one or more acts of the series of acts700 in addition to or alternatively to one or more acts of the series ofacts 600 of FIG. 6. While FIG. 7 illustrates acts according to oneembodiment, alternative embodiments may omit, add to, reorder, and/ormodify any of the acts shown in FIG. 7. The acts of FIG. 7 can beperformed as part of a method. Alternatively, a non-transitorycomputer-readable medium can comprise instructions that, when executedby one or more processors, cause a computing device to perform the actsof FIG. 7. In some embodiments, a system can perform the acts of FIG. 7.

As shown, the series of acts 700 includes an act 702 of identifying awrist position and a shoulder position of an animated character in aframe of a digital animation. For example, the act 702 can includeidentifying user input of a shoulder position and/or user input of awrist position. In some embodiments, the act 702 includes identifyinguser input moving a wrist from an initial position to the wristposition.

Further, the series of acts 700 includes an act 704 of determining,based on the wrist position and the shoulder position of the animatedcharacter, a first inverse kinematic solution of a first elbow positionand a second inverse kinematic solution of a second elbow position. Forexample, as described above, the act 704 can include utilizing aninverse kinematic algorithm to analyze the wrist position and theshoulder position to determine the first inverse kinematic solution thatincludes the first elbow position and the second inverse kinematicsolution that includes the second elbow position.

In addition, the series of acts 700 includes an act 706 of determining,based on a shoulder angle of the animated character, a modified elbowposition by blending the first inverse kinematics solution of the firstelbow position and the second inverse kinematic solution of the secondelbow position. Specifically, in some embodiments, the act 706 includesidentifying the shoulder angle of the animated character in the frame ofthe two-dimensional digital animation by identifying an angle between areference plane associated with the animated character and a lineconnecting the shoulder position with the first elbow position or thesecond elbow position.

In some embodiments, the act 706 includes determining the modified elbowposition in response to determining that the shoulder angle of theanimated character falls within a blending region. In these or otherembodiments, the blending region comprises a range of angles between afirst angle and a second angle. Thus, in some embodiments, the act 706includes determining that the shoulder angle of the animated characterfalls within the blending region by determining that the shoulder angleis between the first angle and the second angle. Additionally oralternatively, the act 706 and/or a separate act includes determiningthe first angle and the second angle by one or more of: (i) identifyinga shoulder angle limit indicating a central angle of the blendingregion; (ii) identifying a transition angle indicating an angle rangerelative to the shoulder angle limit; and/or (iii) determining the firstangle and the second angle by applying the transition angle to theshoulder angle limit.

As further shown, the series of acts 700 includes an act 708 ofgenerating a representation of the animated character based on the wristposition, the shoulder position, and the modified elbow position.Specifically, the act 708 includes generating the representation of theanimated character based on the wrist position, the shoulder position,and the modified elbow position by generating a modified arm having amodified arm length shorter than an initial arm length.

It is understood that the outlined acts in the series of acts 700 areonly provided as examples, and some of the acts may be optional,combined into fewer acts, or expanded into additional acts withoutdetracting from the essence of the disclosed embodiments. As an exampleof an addition act not shown in FIG. 7, an act in the series of acts 700may include blending the first inverse kinematics solution of the firstelbow position and the second inverse kinematic solution of the secondelbow position by weighting the first inverse kinematic solution of thefirst elbow position and the second inverse kinematic solution of thesecond elbow position based on proximity of the shoulder angle relativeto the first angle and the second angle. In some embodiments, weightingthe first inverse kinematics solution of the first elbow position andthe second inverse kinematic solution of the second elbow positioncomprises applying a smoothstep function to the first inverse kinematicssolution of the first elbow position and the second inverse kinematicsolution of the second elbow position based on the first angle, thesecond angle, and the shoulder angle.

As another example act not shown in FIG. 7, an act in the series of acts700 may include receiving a user input associated with a portion of theanimated character to move at least one of the wrist position or theshoulder position to a new wrist position and a new shoulder position,respectively. Acts described above, (e.g., acts 704-706) may be repeatedfor the new wrist and shoulder position to determine a new wristposition, a new shoulder position, and a new modified elbow position.For example, an act in the series of acts 700 may include determining,based on the new wrist position and the new shoulder position, a thirdinverse kinematic solution of a third elbow position and a fourthinverse kinematic solution of a fourth elbow position. In yet anotherexample, an act in the series of acts 700 may include determining, basedon a new shoulder angle of the animated character, a new modified elbowposition by blending the third inverse kinematics solution of the thirdelbow position and the fourth inverse kinematic solution of the fourthelbow position. Additionally or alternatively, another act in the seriesof acts 700 may include generating an additional representation of theanimated character based on the new wrist position, the new shoulderposition, and the new modified elbow position.

As another example act not shown in FIG. 7, an act in the series of acts700 may include associating a first art layer with a first orientationof an arm of the animated character and associating a second art layerwith a second orientation of the arm of the animated character.Additionally or alternatively, an act in the series of acts 700 mayinclude determining a switch point within a blending region at which ashoulder angle of the animated character triggers a switch between thefirst art layer and the second art layer. Another act in the series ofacts 700 may then include generating for display the first art layer orthe second art layer by comparing the shoulder angle and the switchpoint.

Embodiments of the present disclosure may comprise or utilize a specialpurpose or general-purpose computer including computer hardware, suchas, for example, one or more processors and system memory, as discussedin greater detail below. Embodiments within the scope of the presentdisclosure also include physical and other computer-readable media forcarrying or storing computer-executable instructions and/or datastructures. In particular, one or more of the processes described hereinmay be implemented at least in part as instructions embodied in anon-transitory computer-readable medium and executable by one or morecomputing devices (e.g., any of the media content access devicesdescribed herein). In general, a processor (e.g., a microprocessor)receives instructions, from a non-transitory computer-readable medium,(e.g., memory), and executes those instructions, thereby performing oneor more processes, including one or more of the processes describedherein.

Computer-readable media can be any available media that can be accessedby a general purpose or special purpose computer system.Computer-readable media that store computer-executable instructions arenon-transitory computer-readable storage media (devices).Computer-readable media that carry computer-executable instructions aretransmission media. Thus, by way of example, and not limitation,embodiments of the disclosure can comprise at least two distinctlydifferent kinds of computer-readable media: non-transitorycomputer-readable storage media (devices) and transmission media.

Non-transitory computer-readable storage media (devices) includes RAM,ROM, EEPROM, CD-ROM, solid state drives (“SSDs”) (e.g., based on RAM),Flash memory, phase-change memory (“PCM”), other types of memory, otheroptical disk storage, magnetic disk storage or other magnetic storagedevices, or any other medium which can be used to store desired programcode means in the form of computer-executable instructions or datastructures and which can be accessed by a general purpose or specialpurpose computer.

A “network” is defined as one or more data links that enable thetransport of electronic data between computer systems and/or modulesand/or other electronic devices. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as a transmissionmedium. Transmissions media can include a network and/or data linkswhich can be used to carry desired program code means in the form ofcomputer-executable instructions or data structures and which can beaccessed by a general purpose or special purpose computer. Combinationsof the above should also be included within the scope ofcomputer-readable media.

Further, upon reaching various computer system components, program codemeans in the form of computer-executable instructions or data structurescan be transferred automatically from transmission media tonon-transitory computer-readable storage media (devices) (or viceversa). For example, computer-executable instructions or data structuresreceived over a network or data link can be buffered in RAM within anetwork interface module (e.g., a “NIC”), and then eventuallytransferred to computer system RAM and/or to less volatile computerstorage media (devices) at a computer system. Thus, it should beunderstood that non-transitory computer-readable storage media (devices)can be included in computer system components that also (or evenprimarily) utilize transmission media.

Computer-executable instructions comprise, for example, instructions anddata which, when executed by a processor, cause a general-purposecomputer, special purpose computer, or special purpose processing deviceto perform a certain function or group of functions. In someembodiments, computer-executable instructions are executed by ageneral-purpose computer to turn the general-purpose computer into aspecial purpose computer implementing elements of the disclosure. Thecomputer-executable instructions may be, for example, binaries,intermediate format instructions such as assembly language, or evensource code. Although the subject matter has been described in languagespecific to structural features and/or methodological acts, it is to beunderstood that the subject matter defined in the appended claims is notnecessarily limited to the described features or acts described above.Rather, the described features and acts are disclosed as example formsof implementing the claims.

Those skilled in the art will appreciate that the disclosure may bepracticed in network computing environments with many types of computersystem configurations, including, personal computers, desktop computers,laptop computers, message processors, hand-held devices, multi-processorsystems, microprocessor-based or programmable consumer electronics,network PCs, minicomputers, mainframe computers, mobile telephones,PDAs, tablets, pagers, routers, switches, and the like. The disclosuremay also be practiced in distributed system environments where local andremote computer systems, which are linked (either by hardwired datalinks, wireless data links, or by a combination of hardwired andwireless data links) through a network, both perform tasks. In adistributed system environment, program modules may be located in bothlocal and remote memory storage devices.

Embodiments of the present disclosure can also be implemented in cloudcomputing environments. As used herein, the term “cloud computing”refers to a model for enabling on-demand network access to a shared poolof configurable computing resources. For example, cloud computing can beemployed in the marketplace to offer ubiquitous and convenient on-demandaccess to the shared pool of configurable computing resources. Theshared pool of configurable computing resources can be rapidlyprovisioned via virtualization and released with low management effortor service provider interaction, and then scaled accordingly.

A cloud-computing model can be composed of various characteristics suchas, for example, on-demand self-service, broad network access, resourcepooling, rapid elasticity, measured service, and so forth. Acloud-computing model can also expose various service models, such as,for example, Software as a Service (“SaaS”), Platform as a Service(“PaaS”), and Infrastructure as a Service (“IaaS”). A cloud-computingmodel can also be deployed using different deployment models such asprivate cloud, community cloud, public cloud, hybrid cloud, and soforth. In addition, as used herein, the term “cloud-computingenvironment” refers to an environment in which cloud computing isemployed.

FIG. 8 illustrates a block diagram of an example computing device 800that may be configured to perform one or more of the processes describedabove. One will appreciate that one or more computing devices, such asthe computing device 800 may represent the computing devices describedabove (e.g., the computing device 500, the server(s) 104, and the clientdevice 108). In one or more embodiments, the computing device 800 may bea mobile device (e.g., a mobile telephone, a smartphone, a PDA, atablet, a laptop, a camera, a tracker, a watch, a wearable device,etc.). In some embodiments, the computing device 800 may be a non-mobiledevice (e.g., a desktop computer or another type of client device).Further, the computing device 800 may be a server device that includescloud-based processing and storage capabilities.

As shown in FIG. 8, the computing device 800 can include one or moreprocessor(s) 802, memory 804, a storage device 806, input/outputinterfaces 808 (or “I/O interfaces 808”), and a communication interface810, which may be communicatively coupled by way of a communicationinfrastructure (e.g., bus 812). While the computing device 800 is shownin FIG. 8, the components illustrated in FIG. 8 are not intended to belimiting. Additional or alternative components may be used in otherembodiments. Furthermore, in certain embodiments, the computing device800 includes fewer components than those shown in FIG. 8. Components ofthe computing device 800 shown in FIG. 8 will now be described inadditional detail.

In particular embodiments, the processor(s) 802 includes hardware forexecuting instructions, such as those making up a computer program. Asan example, and not by way of limitation, to execute instructions, theprocessor(s) 802 may retrieve (or fetch) the instructions from aninternal register, an internal cache, memory 804, or a storage device806 and decode and execute them.

The computing device 800 includes memory 804, which is coupled to theprocessor(s) 802. The memory 804 may be used for storing data, metadata,and programs for execution by the processor(s). The memory 804 mayinclude one or more of volatile and non-volatile memories, such asRandom-Access Memory (“RAM”), Read-Only Memory (“ROM”), a solid-statedisk (“SSD”), Flash, Phase Change Memory (“PCM”), or other types of datastorage. The memory 804 may be internal or distributed memory.

The computing device 800 includes a storage device 806 includes storagefor storing data or instructions. As an example, and not by way oflimitation, the storage device 806 can include a non-transitory storagemedium described above. The storage device 806 may include a hard diskdrive (HDD), flash memory, a Universal Serial Bus (USB) drive or acombination these or other storage devices.

As shown, the computing device 800 includes one or more I/O interfaces808, which are provided to allow a user to provide input to (such asuser strokes), receive output from, and otherwise transfer data to andfrom the computing device 800. These I/Ointerfaces 808 may include amouse, keypad or a keyboard, a touch screen, camera, optical scanner,network interface, modem, other known I/O devices or a combination ofsuch I/O interfaces 808. The touch screen may be activated with a stylusor a finger.

The I/O interfaces 808 may include one or more devices for presentingoutput to a user, including, but not limited to, a graphics engine, adisplay (e.g., a display screen), one or more output drivers (e.g.,display drivers), one or more audio speakers, and one or more audiodrivers. In certain embodiments, I/Ointerfaces 808 are configured toprovide graphical data to a display for presentation to a user. Thegraphical data may be representative of one or more graphical userinterfaces and/or any other graphical content as may serve a particularimplementation.

The computing device 800 can further include a communication interface810. The communication interface 810 can include hardware, software, orboth. The communication interface 810 provides one or more interfacesfor communication (such as, for example, packet-based communication)between the computing device and one or more other computing devices orone or more networks. As an example, and not by way of limitation,communication interface 810 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI. The computingdevice 800 can further include a bus 812. The bus 812 can includehardware, software, or both that connects components of the computingdevice 800 to each other.

In the foregoing specification, the invention has been described withreference to specific example embodiments thereof. Various embodimentsand aspects of the invention(s) are described with reference to detailsdiscussed herein, and the accompanying drawings illustrate the variousembodiments. The description above and drawings are illustrative of theinvention and are not to be construed as limiting the invention.Numerous specific details are described to provide a thoroughunderstanding of various embodiments of the present invention.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. For example, the methods described herein may beperformed with less or more steps/acts or the steps/acts may beperformed in differing orders. Additionally, the steps/acts describedherein may be repeated or performed in parallel to one another or inparallel to different instances of the same or similar steps/acts. Thescope of the invention is, therefore, indicated by the appended claimsrather than by the foregoing description. All changes that come withinthe meaning and range of equivalency of the claims are to be embracedwithin their scope.

What is claimed:
 1. A non-transitory computer-readable medium storinginstructions that, when executed by at least one processor, cause acomputing device to: determine a position of a first end of a firststructural member of an animated character, a second end of the firststructural member being connected to a first end of a second structuralmember by a joint; determine a position of a second end of the secondstructural member; determine, based on the position of the first endposition of the first structural member and the position of the firstend of the second structural member of the animated character, a firstinverse kinematic solution of a first joint position and a secondinverse kinematic solution of a second joint position; determine amodified joint position by blending the first inverse kinematic solutionof the first joint position and the second inverse kinematic solution ofthe second joint position according to blending weights determined basedon an angle of the first structural member of the animated character;and generate a representation of the animated character based on theposition of the first end of the first structural member, the positionof the second end of the second structural member, and the modifiedjoint position.
 2. The non-transitory computer-readable medium of claim1, further comprising instructions that, when executed by the at leastone processor, cause the computing device to identify the angle of thefirst structural member of the animated character by identifying anangle between a reference plane associated with the animated characterand a line connecting the position of the first end of the firststructural member with the first joint position or the second jointposition.
 3. The non-transitory computer-readable medium of claim 1,further comprising instructions that, when executed by the at least oneprocessor, cause the computing device to determine the modified jointposition in response to determining that the angle of the firststructural member of the animated character falls within a blendingregion.
 4. The non-transitory computer-readable medium of claim 3,wherein the blending region comprises a range of angles between a firstangle and a second angle and further comprising instructions that, whenexecuted by the at least one processor, cause the computing device todetermine that the angle of the first structural member of the animatedcharacter falls within the blending region by determining that the angleof the first structural member is between the first angle and the secondangle.
 5. The non-transitory computer-readable medium of claim 4,further comprising instructions that, when executed by the at least oneprocessor, cause the computing device to determine the first angle andthe second angle of the blending region by: identifying an angle limitof the first structural member indicating a central angle of theblending region; identifying a transition angle indicating an anglerange relative to the angle of the first structural member limit; anddetermining the first angle and the second angle by applying thetransition angle to the angle of the first structural member limit. 6.The non-transitory computer-readable medium of claim 4, furthercomprising instructions that, when executed by the at least oneprocessor, cause the computing device to generate the blending weightsbased on proximity of the angle of the first structural member relativeto the first angle and the second angle.
 7. The non-transitorycomputer-readable medium of claim 6, further comprising instructionsthat, when executed by the at least one processor, cause the computingdevice to further generate the blending weights by applying a smoothstep function to the first inverse kinematic solution of the first jointposition and the second inverse kinematic solution of the second jointposition based on the first angle, the second angle, and the angle ofthe first structural member.
 8. The non-transitory computer-readablemedium of claim 1, wherein: the position of the first end of the firststructural member comprises a shoulder position; the position of thesecond end of the second structural member comprises a wrist position;and the joint comprises an elbow.
 9. The non-transitorycomputer-readable medium of claim 8, wherein the animated charactercomprises an arm having an initial arm length and further comprisinginstructions that, when executed by the at least one processor, causethe computing device to generate the representation of the animatedcharacter based on the position of the second end of the secondstructural member, the position of the first end of the first structuralmember, and the modified joint position by generating a modified armhaving a modified arm length shorter than the initial arm length. 10.The non-transitory computer-readable medium of claim 8, furthercomprising instructions that, when executed by the at least oneprocessor, cause the computing device to: associate a first art layerwith a first orientation of an arm of the animated character andassociate a second art layer with a second orientation of the arm of theanimated character; determine a switch point within a blending region atwhich an angle of the first structural member of the animated charactertriggers a switch between the first art layer and the second art layer;and generate for display the first art layer or the second art layer bycomparing the angle of the first structural member and the switch point.11. A system comprising: at least one memory device storing an animatedcharacter comprising a first structural member, a second structuralmember, and a joint connecting a second end of the first structuralmember to a first end of the second structural member; at least oneprocessor configured to cause the system to: determine a position of afirst end of the first structural member; determine a position of asecond end of the second structural member; determine, based on theposition of the first end of the first structural member and theposition of the second end of the second structural member, a firstinverse kinematic solution of a first joint position and a secondinverse kinematic solution of a second joint position different from thefirst joint position; determine an angle of the first structural memberbased on the position of the first end of the first structural memberand the first joint position or the second joint position; determine amodified joint position by blending the first inverse kinematic solutionof the first joint position and the second inverse kinematic solution ofthe second joint position according to blending weights determined basedon the angle of the first structural member; and generate arepresentation of the animated character based on the position of thefirst end of the first structural member, the position of the second endof the second structural member, and the modified joint position. 12.The system of claim 11, wherein the at least one processor is configuredto cause the system generate the first inverse kinematic solution byconstraining one or more of a length of the first structural member, alength of the second structural member, the position of the first end ofthe first structural member, or the position of the second end of thesecond structural member.
 13. The system of claim 11, wherein the atleast one processor is configured to cause the system to generate thefirst inverse kinematic solution utilizing iterative optimization. 14.The system of claim 11, wherein one or more of the first structuralmember or the second structural member is flexible.
 15. The system ofclaim 11, wherein: the first structural member comprises an upper arm;the second structural member comprises a lower arm; the position of thefirst end of the first structural member comprises a shoulder position;the position of the second end of the second structural member comprisesa wrist position; and the joint comprises an elbow.
 16. Acomputer-implemented method comprising: identifying a user interactionto move one or more portions of an animated character in atwo-dimensional digital animation; based on the user interaction,identifying a first joint position and a second joint position of theanimated character; determining, based on the first joint position andthe second joint position, a first inverse kinematic solution of a firstmiddle joint position and a second inverse kinematic solution of asecond middle joint position; generating the animated character having ablended middle joint position by blending the first inverse kinematicsolution of the first middle joint position and the second inversekinematic solution of the second middle joint position; and providingthe animated character having the blended middle joint position fordisplay as part of the two-dimensional digital animation.
 17. Thecomputer-implemented method of claim 16, wherein: the first jointposition includes a position of a first end of a first structural memberof the animated character; and the second joint position includes aposition of a second end of a second structural member of the animatedcharacter.
 18. The computer-implemented method of claim 16, wherein theblended middle joint position is spatially positioned between the firstmiddle joint position and the second middle joint position.
 19. Thecomputer-implemented method of claim 16, wherein the animated charactercomprises an arm having an initial arm length and thecomputer-implemented method further comprises generating the animatedcharacter based on the first joint position, the second joint position,and the blended middle joint position by generating a modified armhaving a modified arm length different from the initial arm length. 20.The computer-implemented method of claim 16, wherein: the first jointposition comprises a shoulder position; the second joint positioncomprises a wrist position; and a middle joint position comprises anelbow position.